IICSでコマンドタスクの引数にファイルリスナが検知したファイル名を渡す
データアナリティクス事業本部の鈴木です。
今回は、タスクフローをファイルリスナから起動した際に、起動のトリガーとなったファイル名をタスクフロー上でコマンドタスクに引数で渡す方法を試してみたのでご紹介します。
やりたいこと
タスクフローではコマンドタスクを使い、セキュアエージェントサーバー上のシェルスクリプトを実行することが可能です。また、タスクフローはファイルリスナから起動することができます。
普通、ファイルリスナの監視対象になっているファイル名はそのときによって変わる可能性があるので、そのファイルに対してシェルスクリプトから処理を実行したい場合は、上手くファイル名をシェルスクリプトの引数に渡してやる必要があります。
タスクフローをファイルリスナから起動した際に、起動のトリガーとなったファイル名をタスクフロー上でコマンドタスクに引数で渡す方法を確認できれば、これにより、検知したファイル名に対して、シェルスクリプトから処理を行うことができます。
リソースの準備
IICSリソースの準備
検証では以下のようにタスクフローとファイルリスナを一つずつ作成しました。
タスクフローは、以下のようにコマンドタスクだけを設定した簡単なものを準備しました。
ファイルリスナをトリガーにして、タスクフローを実行するようにしました。
コマンドタスクの設定の詳細は後述します。
ファイルリスナは以下のように、検証用S3バケットに、/input
で終わるキープレフィクスでアップロードすると検知するように設定し、開始しておきました。
シェルスクリプトの準備
セキュアエージェントサーバー上に、コマンドタスクから実行するシェルスクリプトを準備しました。
コマンドタスクから1つ引数を受け取り、同じディレクトリのファイルに書き込むシェルスクリプトを準備し、例えば今回の検証環境だと、/home/infa/cm_nayuts/
に配置しました。
コマンドタスクからシェルスクリプトに、第一引数としてトリガーとなったファイル名を渡し、確かに名前が渡っていることを確認します。
echo $1 > home/infa/cm_nayuts/test.txt
シェルスクリプトのパスはコマンドタスクで設定するので控えておきます。また、test.sh
にはセキュアエージェントから実行するための権限があることを確認しておきました。
やってみる
コマンドタスクの設定
コマンドタスクでは、スクリプトファイル名にセキュアエージェント上のシェルスクリプトのファイルパスをそのまま記載しました。入力引数の方は"
で囲って、ファイルリスナで検知したファイルの名前を"{$input.sample_fl[1]/arrivedFiles[1]/name}"
という風に指定しました。スクリプトファイル名・入力引数は共にコンテンツを選択しています。
コンテンツの場合の記載のフォーマットは、以下の公式ドキュメントのコマンドタスクステップのページに記載されています。
- https://docs.informatica.com/ja_jp/integration-cloud/cloud-data-integration/current-version/_taskflows_cloud-data-integration_current-version_ditamap/GUID-90D4E9B7-1FBA-4E47-B1F2-CB6C5F5930F3/GUID-B9258137-0DCB-4709-8895-6C6A01D43D94/GUID-E4F6EC72-11E8-4EF7-936F-8BE593FF2905.html
入力引数に設定する、ファイルリスナで検知したファイルの名前は、入力欄右側の(x)
ボタンを押すと、以下のようにトグルを開いて入力することができます。
ドキュメントによると、スクリプトファイル名はコンテンツの場合、実行するスクリプトへのパスを入力します。入力引数はコンテンツの場合、各引数は二重引用符(")で囲み、カンマ(,)を使用して区切る必要があります。
実行して結果を確認する
ファイルリスナを開始し、監視先にsample_data.csv
をアップロードしました。
モニターからタスクフローが正常に実行されたことを確認しました。
最後に、セキュアエージェントサーバー上から、できたファイルの中身を確認して、アップロードしたファイルの名前が書かれていることを確認しました。
これで確かに、コマンドタスクの引数経由で、ファイルリスナで検知したファイル名が渡せていることが分かりました。
最後に
今回はタスクフローをファイルリスナから起動した際に、起動のトリガーとなったファイル名をタスクフロー上でコマンドタスクに引数で渡す方法を試してみました。
慣れてしまうと簡単ですが、初めての場合はパスと引数の設定についてドキュメントをまず確認してから行うことになります。試してみたい方の参考になれば幸いです。